<?php

class Application_Model_Login {

    private $msg = array();

    public static function login(Application_Model_DAO_Usuario $object) {
        $model = new self;
        $db = Zend_Db_Table::getDefaultAdapter();
        $adapter = new Zend_Auth_Adapter_DbTable($db, 'Usuario', 'nomeUsu', 'senha');

        $select = $adapter->getDbSelect();
        $select->where("estatusLogin = '1'");

        $adapter->setIdentity($object->getNomeUsuario())
                ->setCredential($object->getSenha());

        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($adapter);

        if ($result->isValid()) {

            $data = $adapter->getResultRowObject(array('idUsuario', 'nomeUsu', 'senha', 'ultimoLoginUsu', 'tipoUsuario', 'estatusLogin'));
            $auth->getStorage()->write($data);

            return true;
        } else {
//            print_r($model->getMessages($result));
//            exit();
            return $model->getMessages($result);
        }
    }

    public function getMessages(Zend_Auth_Result $result) {

        switch ($result->getCode()) {

            case $result::FAILURE_IDENTITY_NOT_FOUND:

                $this->msg['error'][] = 'Login não Encontrado';

                break;

            case $result::FAILURE_IDENTITY_AMBIGUOUS:

                $this->msg['error'][] = 'Login em duplicidade';
                break;

            case $result::FAILURE_CREDENTIAL_INVALID:

                $this->msg['error'][] = 'Senha Incorreta';
                break;


            default:
                $this->msg['error'][] = 'Login e/ou senha não encontrados';
                break;
        }
        return $this->msg['error'];
    }

}

